package org.jiuling.crypto.algorithm;


import org.jiuling.basics.converter.ByteConvert;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * MD5加密
 * @author 紫灵
 * @date 2021年09月08日 22时35分16秒
 */
public class MD5 {

    /**
     * 私有构造函数，禁止创建对象
     */
    private MD5() {}

    /**
     * 获取MD5值
     * @param param 参数
     * @return MD5
     */
    public static String getMd5(String param){
        byte[] btInput = param.getBytes();
        // 获得MD5摘要算法的 MessageDigest 对象
        MessageDigest messageDigest = null;
        try {
            messageDigest = MessageDigest.getInstance("MD5");
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        // 使用指定的字节更新摘要
        assert messageDigest != null;
        messageDigest.update(btInput);
        return ByteConvert.byteArrayToHexString(messageDigest.digest());
    }

    /**
     * 获取MD5值
     * @param charSequence 字符序列
     * @return MD5
     */
    public static String getMd5(CharSequence charSequence){
        return MD5.getMd5(String.valueOf(charSequence));
    }

    /**
     * 获取MD5
     * @param param 参数
     * @param salt 盐值
     * @return MD5
     */
    public static String getMd5(String param,String salt){
        return getMd5(param+salt);
    }

}
